1. Field of Invention
The invention relates generally to computer systems. More particularly, methods and apparatus for providing a data-modeling schema for efficiently representing complex products and selling processes in a computer system are disclosed.
2. Description of Relevant Art
Generally speaking, a browser is an application program that provides a way to look at and interact with information on distributed computer networks such as the Internet. In particular, a Web browser is a client program that uses the Hypertext Transfer Protocol (HTTP) to make requests of Web servers throughout the Internet on behalf of the browser user. One of the most recent uses of browsers is in the realm of electronic (e-) commerce in which any number of client side users (i.e. xe2x80x9ce-customersxe2x80x9d) interact in a real time basis with any number of server side processors (i.e., xe2x80x9ce-sellersxe2x80x9d) over the Internet. In order to transact business in a Web-based environment, browsers typically execute Web commerce applications specifically designed to facilitate e-commerce transactions such as requesting quotes, selecting options and assembling components into complex bundles, and placing orders.
In this regard, successful Web commerce applications must be capable of automating a customer through the entire buying cycle, from initial inspection to final purchase and shipping, in addition to providing the customer all relevant information required to make a buying decision and providing customer guidance. As the complexity of the buying cycle and/or the purchases themselves increasesxe2x80x94for instance, from buying office supplies to buying mainframe computersxe2x80x94a general purpose Web commerce application must scale its ability to manage this complexity. In order to accomplish this, a general purpose Web commerce application must be: 1) fast loading and highly responsive in xe2x80x9cclick over clickxe2x80x9d type scenarios in order to support highly interactive customer sessions such that a buyer can input any and all relevant information quickly and with apparently little or no delay in application response; 2) powerful in its ability to process relevant data from a broad range of possible choices, configurations, and problem domains quicklyxe2x80x94in other words, a general purpose Web commerce application should have the flexibility and computational power of a conventional programming language; 3) the application must be robust in that it can run on a wide variety of client machines while maintaining greater than 99% up time, and finally; 4) the Web commerce application must be highly scalable given the unpredictable and potentially large number of buyers who may simultaneously access the application online.
However, in addition to a highly interactive and robust e-commerce application, selling complex products via the Web requires the presentation of vast amounts of information that buyers can navigate through and interact with in a concise, meaningful way. This information typically includes a number of complex entities, each with specific attributes forming intricate relations with one another that must be calibrated for the customer.
In the past, organizations have attempted to solve the problem of representing complex products by employing custom applications that rely on highly specialized software programming techniques. The use of artificial intelligence applications and other complex approaches has produced expensive solutions that are costly to maintain. One such approach relies on the memorialization of business rules in code. Another approach relies on the representation in code of formal mathematical constraints on product selection parameters. Unfortunately, however, by coding business rules and logic in programming languages such as C++, LISP, or Visual Basic, organizations have tied themselves to the expensive skills of application programmers. For example, even trivial changes in the way a company markets and sells its offerings may require the services of a trained software developer.
In an attempt to avoid the high cost of programmers, some companies have turned to configuration toolkits (referred to in the art as Fourth Generation Languages, or 4GL) that create an abstraction layer for the maintainers of the system. However, the underlying details of the system are still reflected in application code masked by the 4GL. This both limits flexibility and introduces a requirement for developers trained in the use of the 4GL itself. In order to achieve flexibility in maintaining their presence with the customer, companies generally resort to diving xe2x80x9cbelow the surfacexe2x80x9d to change application code and modify rules. This has generally resulted in companies having to cultivate both 4GL and conventional development skills within their organizations.
More recently, organizations have been shifting to Web sales applications to create efficiencies in the selling process and reach new buyers. As they realize those goals and more people rely on the systems, both the computing power for processing the application code and the frequency with which updates are made must scale with that success. The traditional solutions to this problem discussed above lead to decreased margins and a downward spiral in profitability. Furthermore, as the power of these systems drives more purchasing activities online, companies must pour more and more expensive development resources into creating and updating new product representations in code. The costs to provide this solution increase while customer satisfaction decreases due to limitations in the flexibility and expense of maintenance of the coded models.
Therefore, what is required is a method of representing complex products and selling processes purely in data models and an apparatus embodied in a computer system that eliminates any requirement for the use of programming languages by those who create and maintain these applications.
In one embodiment of the invention, a computer implemented method of distributing a first relation amongst a set of orthogonal sub-relations is described. An orthogonal sub-relation from the set of orthogonal sub-relations is identified and removed from the first relation. All orthogonal sub-relations that can be successively identified in the first relation are successively removed to form a reduced first relation that is substantially reduced in size as compared to the first relation. In this way, the distributed relation is formed of the reduced first relation and a set of referenced orthogonal sub-relations.
In a preferred embodiment, an engine reconstructs the first relation by evaluating the distributed relation.
In another embodiment of the invention, a computer program product in the form of computer codes that are stored in a computer readable medium that is used for distributing a first relation amongst a set of orthogonal sub-relations is disclosed.
In still another embodiment, a main table T is used to define a relation across all options by listing all possible combinations of all option values, and a plurality of associated sub-tables represent orthogonal relations between each of a plurality of subsets of options as defined by the main table T. As a method, each value in the set S is checked against a corresponding masked column in each row of the table T until a match is found for all such masked columns. If it is determined that each of the values in the set S matches each of the corresponding masked columns for at least one row in the main table T, then each matching value in the set S is looked up in an associated option table. All translations for the associated option table are then added to the set S to form a translated set S. If a matched row does not contains a reference to any of the plurality of sub-tables then the translated set S is displayed, otherwise, each sub-table is recursively matched until there are no further references.
In yet another embodiment of the invention, a computer program product in the form of computer codes that are stored in a computer readable medium that is used for interpreting a user selected set of options S each of which has an associated option value is disclosed.